Jenkins on Raspberry Pi
🫐

Jenkins on Raspberry Pi

Description
라즈베리파이에 젠킨스 설치, 스프링 부트 배포
category
ETC
Tag
Jenkins
Raspberry Pi
Date
Nov 15, 2023 11:48 AM

구축 환경

  • 라즈베리파이4 8gb
  • Ubuntu 20.04 LTS
  • Jenkins in docker
 
라즈베리파이가 Arm 형식이라 일반적으로 설치하는 건 되지 않았다. 그래서 여러 시행착오가 있었다. 마침 Jenkins가 jdk17을 지원하기 시작했고 해당 docker image만 정상적으로 구동 되었다.
 

Jenkins 설정

Docker

docker pull jenkins/jenkins:lts-jdk17 docker run -p 8080:8080 -p 50000:50000 --restart=on-failure -v {SET DIR HERE}:/var/jenkins_home jenkins/jenkins:lts-jdk17
Jenkins Root Dir 꼭 지정해주자
 
정상적으로 설치되었으니 이제 spring boot를 배포 해보자

Springboot 배포를 위한 Jenkins 사전 설정

  1. jdk 설정
  1. gradle 설정
  1. github creditional 설정
 

JDK 설정

JDK설정은 SpringBoot를 Build 하기 위해서 설정해주어야 한다.
JDK설정은 Jenkins 관리 → System Configuration → Tools → JDK installations 에서 지정해주면 된다.
우선 Add JDK를 눌러주도록 하자
JDK지정은 라즈베리파이에 깔린 JDK의 경로지정으로 해주어도 되지만 Install automatically를 이용해 설치해 주었다. 주소는 아래 링크에서 아키텍쳐에 맞게 정하면 된다.
Subdirectory of extracted archive는 꼭 버전에 맞게 지정해주어야 된다.
notion image
 

Gradle 설정

필자는 Springboot를 Gradle를 이용해서 build했기 때문에 설정해 주었다.
Gradle설정은 Jenkins 관리 → System Configuration → Tools → Gradle installations 에서 지정해주면 된다.
우선 Add JDK를 눌러주도록 하자
Gradle도 Install automatically를 이용해 설치해 주었다. 원하는 버전을 선택해 지정해 주면 된다.
notion image
 

Github creditional 설정

배포를 위해 Github에서 Repository를 가져올 거기 때문에 Github Creditional를 설정해 주었다.
우선 Github → Settings → Developer settings → Personal access tokens → Tokens(classic) 으로 이동해 준다.
notion image
Generate new token (classic) 으로 생성해주었다.
notion image
설정은 위와 같이 해주자
notion image
토큰를 따로 저장을 해놓은 뒤
Jenkins 관리 → System Configuration → System → GitHub Server로 돌아와
Add → Jenkins를 눌러주자
Kind는 Secret text로 지정한 뒤 토큰은 Secret에 입력해주고 ID는 임의로 지정해 준다.
notion image
등록한 Credential을 지정해주자
notion image
정상적으로 등록되었다면 Test connection 버튼을 눌렀을 시 아래와 같이 나오게 된다. Save 눌러주자
notion image
 
 

Item 생성

사전 설정이 끝났으니 Item을 생성해 주자 Freestyle project로 생성해 주었다.
notion image
 

Git 등록

배포 할 Repository URL을 적어놓은 뒤 Credentials Add 해준다.
notion image
Kind를 Username with password로 지정한 뒤 아래와 같이 지정해준다.
notion image
브런치도 지정해준다.
notion image
 

Build Steps

빌드 설정은 Invoke Gradle script로 지정해주었다.
notion image
notion image
 
설정이 끝났으니, 저장을 눌러준다.
 

빌드

지금 빌드를 누르면 아래와 같이 진행되는 것을 볼 수 있다.
notion image
 
굿
notion image
 
 

추가정보들

jar 자동 실행 스크립트 (용도에 맞게 수정)

#!/bin/bash REPOSITORY=/home/bobong cd $REPOSITORY/SotiStory/ echo "### check running application... ###" CURRENT_PID=$(pgrep -f Sotistory) echo "$CURRENT_PID" if [ -z $CURRENT_PID ]; then echo "### Not found running application ###" else echo "## Found application!! try to kill process $CURRENT_PID ###" kill -9 $CURRENT_PID sleep 3 fi echo "### Ready to deploy ###" JAR_NAME=$(ls $REPOSITORY/SotiStory |grep 'Sotistory' | tail -n 1) echo "### Source file Name: $JAR_NAME ###" nohup java -jar $REPOSITORY/SotiStory/$JAR_NAME
 

ssh 설정

notion image
 
 

ssh 등록

Publish over SSH 플러그인 설치
Jenkins 관리 → System → Publish over SSH
notion image